Public Class WindMeter

    Public Sub VerwerkWindKracht(ByVal OpgegevenWindkracht As String)
        If Me.InvokeRequired Then
            MsgBox("hier zou de tekst op " & OpgegevenWindkracht & " staan.")
        Else
            Me.TextBox1.Text = Format(Val(OpgegevenWindkracht), "0.0")
        End If
    End Sub

    Public Sub VerwerkWindRichting(ByVal OpgegevenWindhoek As String)

        If Me.Panel1.InvokeRequired Then
            MsgBox("de wijzer moet nu op " & OpgegevenWindhoek & " staan.")
        Else
            Dim TekenPen As New System.Drawing.Pen(System.Drawing.Color.Orange)
            Dim GraphicOpPanel As System.Drawing.Graphics 'dit gedraagt zich als tekenpapier
            Dim WijzerplaatMidden As System.Drawing.Point
            Dim WijzerEindpunt As System.Drawing.Point
            Dim WijzerpuntX As Long
            Dim WijzerpuntY As Long
            Dim BasisX As Single = Me.Width / 2
            Dim BasisY As Single = Me.Height / 2 - (Me.Height / 13)
            Dim angle As Single = Math.PI * ((Val(OpgegevenWindhoek)) / 180.0) 'via deze formule wordt het aantal graden als hoek in radialen voorgesteld
            Dim sinAngle As Single = Math.Sin(angle)
            Dim cosAngle As Single = Math.Cos(angle)

            Me.Controls.Remove(Me.Panel1) 'eerst de eventueel bestaande afbeelding weghalen om te voorkomen dat ze over elkaar heen blijven staan.
            Me.Controls.Add(Me.Panel1) 'dan de nieuwe afbeelding weergeven

            GraphicOpPanel = Me.Panel1.CreateGraphics() 'maak het tekenen op Panel1 mogelijk
            TekenPen.Width = Me.Height / 50 'zet de breedte van de wijzer in relatie tot de grootte van de afbeelding
            WijzerplaatMidden.X = 0 + BasisX            'Stel het centrum in als 0,0            Stel een offset voor de X 
            WijzerplaatMidden.Y = 0 + BasisY            'Stel het centrum in als 0,0            Stel een offset voor de Y

            'bereken de waarden van de eindpunten
            WijzerpuntX = (Me.Height / 4.5) * sinAngle 'vermenigvuldig de sinuswaarde met de gewenste lengte van de wijzer, die zich verhoudt tot de grootte van de meter als geheel.
            WijzerpuntY = (Me.Height / 4.5) * -1 * cosAngle  'vermenigvuldig de cosinuswaarde met de gewenste lengte van de wijzer, die zich verhoudt tot de grootte van de meter als geheel.

            'tel de berekende waarden bij het wijzerplaatmidden op
            WijzerEindpunt.X = WijzerplaatMidden.X + WijzerpuntX
            WijzerEindpunt.Y = WijzerplaatMidden.Y + WijzerpuntY

            GraphicOpPanel.DrawLine(TekenPen, WijzerplaatMidden, WijzerEindpunt) 'plaats uiteindelijk de gevonden wijzer op de graphic
        End If
    End Sub

End Class
